home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl160 / sch100.lzh / GENERAL.DOC < prev    next >
Text File  |  1993-05-30  |  20KB  |  492 lines

  1.                                 SCHOONER
  2.                          Version 1.00 Shareware
  3.                               User's Manual
  4.  
  5.  
  6.                          DISCLAIMER AND WARRANTY
  7.                              the small print
  8.  
  9.   We have  done the best  to make this  a great package,  it may not be
  10.   perfect for you. Test it  out. If you like it then register your copy
  11.   and pass on another copy.
  12.  
  13.  
  14.        The  program  is provides  "AS  IS" without warranty of any
  15.        kind,  either  expressed   or  implied, including  but  not
  16.        limited to  the implied warranties  of merchantability  and
  17.        fitness  for a particular   purpose. The entire risk as  to
  18.        the  quality and performance   of the program is with  you.
  19.        Should  the program  prove defective, you (and not Jonathan
  20.        Cook)  assume the  entire cost of all necessary  servicing,
  21.        repair or correction.
  22.  
  23.        Jonathan Cook does  not warrant that the function contained
  24.        in  the  program  will  meet your requirements or that  the
  25.        operation  of the  program  will be uninterrupted or  error
  26.        free.
  27.  
  28.        In  no  event will Jonathan  Cook  be liable to you for any
  29.        damages  including any  lost profits, lost savings or other
  30.        incidental or consequential  damages arising out of the use
  31.        or inability  to use such  program or for  any claim by any
  32.        other party.
  33.  
  34.  
  35.  
  36.   Note:  Clipper(r),  Dbase and  Foxbase  are  registered  names and/or
  37.   trademarks of  Computer Associates, Borland  and Microsoft. Any other
  38.   name references,  expressed or  implied, are  registered names and/or
  39.   trademarks of their respective developers/manufacturers.
  40.  
  41.  
  42.                               INTRODUCTION
  43.  
  44.   Schooner is  a powerful, full  featured database programming language
  45.   similar to other Xbase languages.
  46.  
  47.   The  Schooner development  environment  revolves around  the powerful
  48.   text editor.  From this  command center  you can  develop and control
  49.   your application.
  50.  
  51.   You can write source code, create reports, create and modify database
  52.   structures, manipulate data and  execute your code... All from within
  53.   the text editor.
  54.  
  55.   In addition,  when errors are  detected, they are  displayed in a red
  56.   box. Schooner then places the  cursor on the line where the error was
  57.   detected, even if  the error occurred in a  module other than the one
  58.   you were editing.
  59.  
  60.   Command  and function  help are  just a  keypress away.  All language
  61.   documentation is on-line and available with the F1 help key.
  62.  
  63.  
  64.                             Getting Started.
  65.  
  66.   Schooner is  very easy to use.  Simply copy the  Sch100.exe file to a
  67.   subdirectory and change to that subdirectory.
  68.  
  69.   Decompress the Schooner files by typing:
  70.  
  71.             sch100.exe
  72.  
  73.   All of the files will decompress and you are ready to go.
  74.  
  75.   To begin Schooner type:
  76.  
  77.             Schooner
  78.  
  79.   and press ENTER.
  80.  
  81.   The Schooner editor will appear.
  82.  
  83.   While the editor appears simple, it will reveal a great deal with the
  84.   F1 key.
  85.  
  86.   Press F1 and the help  screen for the editor will appear. This screen
  87.   details all of the commands available to the editor.
  88.  
  89.   You  can cut  and paste  blocks of  text, read  and write  files (and
  90.   blocks) to and from disk,  create and edit data files and even create
  91.   report templates with the report writer.
  92.  
  93.   Press the F2 key from the editor help screen and a list of all of the
  94.   commands and functions available to the language appear.
  95.  
  96.   Scroll through the list. A short description accompanies each command
  97.   or  function. Press  ENTER  on a  highlighted  line and  the complete
  98.   description for that command or function appears.
  99.  
  100.   Each description  contains the command or  function name, the syntax,
  101.   the  use,   a  parameter   description,  return   values,  a  general
  102.   description and an sample piece of code.
  103.  
  104.   Press ESC and  you will back out of the  help system the same way you
  105.   went in.
  106.  
  107.  
  108.                            Viewing an Example
  109.  
  110.   An entire demo application is available for your viewing pleasure.
  111.  
  112.   Press F8 and enter the file name:
  113.  
  114.             DMDEMO.PRG
  115.  
  116.   and press ENTER.
  117.  
  118.   The program  DMDEMO will appear  on the screen.  To experienced XBASE
  119.   programmers the code will immediately look familiar.
  120.  
  121.   Use the arrow  keys to scroll up and  down. When you are done viewing
  122.   the code, execute it. Press
  123.  
  124.                  Alt-R
  125.  
  126.   Schooner assumes  you want to  run the  code that is  loaded into the
  127.   editor. You will  note that the file  name has changed to DMDEMO.RUN.
  128.   In the blink of an eye the code has been saved and converted into the
  129.   RUN format for execution.
  130.  
  131.   In fact all programs  (.prg) are automatically saved and converted to
  132.   .run format whenever  you press Alt-R (or  CTRL-W). This assures that
  133.   your .prg and .run are in synch at all times.
  134.  
  135.   Play with  the demo. When done  press ESC from the  demo menu and you
  136.   will return  to the exact  location in  the editor at  which you left
  137.   when you pressed Alt-R.
  138.  
  139.   The various programs  that make up the  demo are an excellent example
  140.   of  Schooner code.  As  mentioned above,  if  you have  experience in
  141.   Dbase(r) Foxbase(r)  or Clipper(r) you  will recognize Schooner right
  142.   away.
  143.  
  144.  
  145.                          Programming in Schooner
  146.  
  147.   Schooner is a language  interpreter. All code that is written and run
  148.   is interpreted  line by line. Experience  shows that interpreters are
  149.   best for fast  development but slower in  execution of code. Compiled
  150.   software is fast in execution, but slow in development.
  151.  
  152.   Schooner attempts  to find a  good compromise to  this problem. Since
  153.   Schooner  is   a  function  interpreter  as   opposed  to  a  command
  154.   interpreter, there is  very little interpretation that actually takes
  155.   place. Thus Schooner runs faster than other interpreters of a similar
  156.   design.
  157.  
  158.   However,  Schooner  goes  one  step  further.  All  Schooner  code is
  159.   Clipper(r)  Summer '87  compiler  compatible. That's  right,  you can
  160.   compile Schooner  code with Clipper(r). Schooner  provides all of the
  161.   advantages of an interpreted development environment and the speed of
  162.   compiled applications.
  163.  
  164.   Unfortunately,  due   to  licensing   issues,  we   cannot  sell  you
  165.   Clipper(r). We can however  provide you with the Schooner library and
  166.   full  instructions  on how  to  compile  your  applications.  See the
  167.   additional compiler documentation below.
  168.  
  169.  
  170.                        Writing your first program
  171.  
  172.   From a  blank editor screen  press F8  and enter a  new program name.
  173.   Call it 'TEST.prg' for this example and press ENTER.
  174.  
  175.   Type in the following lines of code. Press ENTER after each line.
  176.  
  177.      clearscrn()
  178.      superbox(00,00,24,79,.T.,"",.f.)
  179.      mvcount=0
  180.      do while mvcount<50
  181.        message('The counter is: '+alltrim(str(mvcount)),'OFF')
  182.        mvcount=mvcount+1
  183.      enddo
  184.      message('DONE!!!')
  185.      quit
  186.  
  187.   When you are  done press ALT-R. This will  save and convert your code
  188.   to .RUN format. Press ENTER to accept the program to run and watch it
  189.   go...
  190.  
  191.   This little program  simply displays a counter  on the screen. But it
  192.   does give  you a  good idea  of how simple  a Schooner  program is to
  193.   write and run.
  194.  
  195.   In order to understand the  code better, press F1 then F2 and look up
  196.   each command and function in the on-line help.
  197.  
  198.  
  199.                     Schooner Technical Specifications
  200.  
  201.   In  a nutshell,  Schooner has  virtually all  of the  capabilities of
  202.   Dbase III  plus(r) and  Clipper(r) Summer '87.  In addition, Schooner
  203.   supports a whole set of graphics functions not found in either of the
  204.   above languages.
  205.  
  206.   System Specifications:  IBM compatible  computers with  640k bytes of
  207.   RAM, hard  drive, one  floppy, DOS 5.0  (developed in  5.0 but should
  208.   work in  version 3.30  or higher)  and a  color monitor  for graphics
  209.   display.
  210.  
  211.   Field types:   Character........32K
  212.                  Numeric..........Max 19 bytes
  213.                  Date.............8 bytes
  214.                  Logical..........1 byte
  215.                  Memo.............Max 64k
  216.  
  217.   Indexing: Schooner supports indexing with the .NTX
  218.             extension.
  219.  
  220.   Arrays:   Single dimensional arrays. Any data type.
  221.             Arrays are declared with the PUBLIC command.
  222.  
  223.   Files:    Database........... .dbf
  224.             Memos.............. .dbt
  225.             Labels............. .lbl
  226.             Reports............ .frm
  227.             Program modules.... .prg
  228.             Run modules........ .run
  229.  
  230.   Procedures and  Functions: Schooner handles  procedures much the same
  231.   way as Dbase  III plus(r). Functions are  handled as described in the
  232.   on-line documentation.  Functions can  be included  in lines  of code
  233.   like any compiled functions  but they cannot pass parameters (this is
  234.   done by  declared public variables),  contain nested Schooner defined
  235.   functions or call other Schooner procedures.
  236.  
  237.   Work Areas:  Schooner supports  9 open  files (work  areas) and index
  238.   combinations but not  to exceed the number  of files declared to DOS.
  239.   Each data file  must reside in its own  work area and can be accessed
  240.   by alias name or the FSELECT() function.
  241.  
  242.   Public: All  variables in Schooner are  declared as public (available
  243.   to all  procedures and functions)  either automatically when assigned
  244.   (mvname='John') or with the  PUBLIC command. All variable names start
  245.   with the letters MV and can contain a maximum of 10 letters.
  246.  
  247.   Operations:
  248.  
  249.        Math:     + addition
  250.                  - subtraction
  251.                  * multiplication
  252.                  / division
  253.                  % modulus
  254.                  ^ raised powers
  255.                 **   "      "
  256.  
  257.        Order:    Operations are solved from left to right.
  258.                  Parentheses are solved first
  259.                  Exponentiation are solved second
  260.                  Multiplication and division are third
  261.                  Addition and subtraction are last
  262.  
  263.        Relational:    < less than
  264.                       > greater than
  265.                       = equal
  266.                       <> not equal
  267.                       <= less than or equal
  268.                       >= greater than or equal
  269.                       $ contained within
  270.                       == exactly equal
  271.  
  272.        Logicals: .and.
  273.                  .or.
  274.                  .not.
  275.  
  276.        Strings:  + join two strings together
  277.                  - joins two strings together but trims any
  278.                    trailing spaces from the first.
  279.  
  280.  
  281.   Passing  DOS Variables  to Schooner  Applications:  You can  pass DOS
  282.   information  to Schooner  by declaring  a DOS  variable with  the SET
  283.   command.  Use  the  GETE()   function  within  Schooner  to  get  the
  284.   environment  variable from  DOS. Be  sure that  the DOS  variable you
  285.   reference in the GETE() function is upper case. See GETE().
  286.  
  287.  
  288.                             Memory Management
  289.  
  290.   You can manage the  use of memory with the following standard CLIPPER
  291.   DOS environment variable settings:
  292.  
  293.        Set CLIPPER=Vxxx;Rxxx;Fxxx;Sx
  294.  
  295.   'V' controls  memory (in kbytes) used  for tracking memory variables.
  296.   If not  defined then 20% of  available memory is  used (upto 44k) for
  297.   variables. Since  only 22 bytes  are used for  each variable, you can
  298.   provide more memory to the  rest of the system by declaring only that
  299.   which is really needed for variables to Schooner.
  300.  
  301.   'R'  controls the  RAM  used for  index  buffers (these  are internal
  302.   buffers and  not those declared  in your config.sys)  and the SHELL()
  303.   function. Unless  you are going  to SHELL()  to DOS, set  this to the
  304.   minimum 16K.
  305.  
  306.   'F' overrides the files setting in Config.sys (but cannot exceed it).
  307.   This can be helpful in managing the number of open files Schooner can
  308.   use.
  309.  
  310.   'S' can  help to  control snow  effects on  older monitors.  Set to 1
  311.   (one) will help eliminate snow.
  312.  
  313.   You do not need to declare the CLIPPER variable to DOS, Schooner will
  314.   simply use the defaults. However, in tight memory environments it can
  315.   help your applications manage memory better.
  316.  
  317.  
  318.                           Network Applications
  319.  
  320.   Schooner  should be  compatible with  most  local area  networks that
  321.   recognize the Clipper(r) method  of record and file locking. However,
  322.   we do  not have a  LAN of our  own to test  with and cannot guarantee
  323.   networking compatibility.
  324.  
  325.   In general, writing applications for networks is pretty easy. Observe
  326.   the following:
  327.  
  328.   Open 'shared', all files  that reside on servers that will be shared.
  329.   Open other  files (especially  those that reside  on the  node PC) as
  330.   exclusive.
  331.  
  332.   All shared files must use record or file locking in order to lock the
  333.   record or  file for  exclusive use by  the requesting  node. Only the
  334.   locking node can modify the record or file. Others, however, can read
  335.   the file.
  336.  
  337.   Be sure to  unlock the record or file  when done so others can access
  338.   the record or file.
  339.  
  340.   Reference the  NETERR() function when  performing network activities.
  341.   This can help you determine error conditions that might arise.
  342.  
  343.   It  is recommended  that  you use  record  locking for  virtually all
  344.   network activities. This  leaves the rest of  the file open for other
  345.   users to  access and provides  better speed as  more users access the
  346.   file.
  347.  
  348.   However, OPEN()  the file  exclusively for such  activities as FZAP()
  349.   which will delete and pack the whole file.
  350.  
  351.  
  352.                     Error Detection During Execution
  353.  
  354.   As mentioned above, errors are trapped at run time and displayed in a
  355.   red box on the screen. Error messages are standard Clipper(r) derived
  356.   messages with  hooks to  the development  environment that  point the
  357.   Schooner editor  back to the  line of code  that generated the error.
  358.   This allows  Schooner to  load the file  that contains  the error and
  359.   place the cursor on the line of code with the error.
  360.  
  361.   Error messages  generally describe  the error well.  However, not all
  362.   messages are  easy to trace.  For the most  part, error messages will
  363.   define the  function, the  internal (not Schooner)  line of offending
  364.   code and a description of the error.
  365.  
  366.   The function described  in the error message  will most likely be the
  367.   Schooner named function, but it may be an internal function. If it is
  368.   an  internal  function,  don't panic.  The  error  is  probably  in a
  369.   Schooner command  or variable declaration. Let  Schooner point you to
  370.   the line of Schooner code and fix the error.
  371.  
  372.   Though  rare, some  errors may  generate  a condition  where Schooner
  373.   cannot  point you  back  to the  line  of code.  These  are generally
  374.   database file errors that  corrupt the file handles used by Schooner.
  375.   This does not cause damage. It simply means you have to manually load
  376.   the source code file and find the error yourself.
  377.  
  378.   Even more  rare are those errors  which dump you  back to DOS. Again,
  379.   they rarely cause damage, but you will need to restart Schooner.
  380.  
  381.   Make liberal use of the  SETEXIT() function to allow you to break out
  382.   of infinite  loop conditions.  In emergencies use  the Alt-C command.
  383.   This will  kill almost  any situation and  return you  to DOS. Simply
  384.   restart Schooner to fix the problem.
  385.  
  386.   The following are some of the more common errors:
  387.  
  388.   Database Required: You attempted to access a non existant database.
  389.  
  390.   Lock Required:  You tried  to perform  a function  which required the
  391.   file or  record to be  locked. Use  the file exclusively  or lock the
  392.   file or record.
  393.  
  394.   Exclusive Required: Similar to above. Use the file exclusively.
  395.  
  396.   Field Numeric Overflow:  You tried to write  a number into a database
  397.   field  where the  size of  the number  is larger  than the  field can
  398.   handle.
  399.  
  400.   Index File Corrupted: You have a damaged index file. Reindex.
  401.  
  402.   Type Mismatch: You tried to join or work on two variables that are of
  403.   a different type.
  404.  
  405.   Subscript Range:  You tried  to use  an array  element that  does not
  406.   exist.  In  rare  situations this  message  may  appear  if  you have
  407.   unbalanced IF..ENDIF or DO WHILE..ENDDO constructs.
  408.  
  409.   Zero Divide: You tried to divide by 0.
  410.  
  411.   Run Error: Occurs when a SHELL() error condition arises.
  412.  
  413.   Open Errors: These can occur  when an error arises during a file open
  414.   attempt. A number  is included with the  error that describes the DOS
  415.   error type.  Refer to your DOS  manual for a  full description of the
  416.   error type.
  417.  
  418.   Print Errors: Generally occur  when the printer is off-line or out of
  419.   paper.
  420.  
  421.   Undefined Identifier:  You tried to  use a variable  that has not yet
  422.   been defined.  Use the  PUBLIC command  to define  it or  assign it a
  423.   value. This can also occur when an IF or DO WHILE statement  tries to
  424.   evaluate  an expression  with an  undefined  variable (EVEN  WHEN THE
  425.   STATEMENT IS NESTED WITHIN  A FALSE CONSTRUCT. This can occur because
  426.   all IF and DO WHILE structures are evaluated in order to maintain the
  427.   internal structure stacks).
  428.  
  429.   Not an Array: You tried to use an array element that does not exist.
  430.  
  431.   Missing External: Generally refers  to misspellings in your code that
  432.   refer to commands or functions.
  433.  
  434.   Internal Error: An ugly one. Could mean a corrupted index file.
  435.  
  436.   Disk Full: Just like it sounds.
  437.  
  438.   Multiple Error:  Several errors  have occurred at  once. Another ugly
  439.   one. You will probable get dumped back to DOS.
  440.  
  441.   Out of  Memory: You have run  out of memory.  Try modifying the above
  442.   listed memory  management variables to  open up some  more memory. In
  443.   particularly  large  applications, try  running  your  code  with the
  444.   SCHOONRT runtime module rather than directly from the editor. This is
  445.   a hassle, but opens up more memory.
  446.  
  447.  
  448.                        Compiling your Applications
  449.  
  450.   As mentioned before, Schooner  is code compatible with the Clipper(r)
  451.   Summer 87 compiler. While  we cannot supply you with the compiler and
  452.   Clipper(r) libraries,  we can provide you  with the Schooner specific
  453.   libraries and  instructions on  how to  easily compile  your Schooner
  454.   code.
  455.  
  456.   The tools you will need are:
  457.        Schooner and your Schooner code.
  458.        The Clipper(r) compiler
  459.        The Clipper(r) and Extend libraries
  460.        The Schooner library
  461.        The Schooner Schgraph library (for graphics)
  462.        The Microsoft(r) 'C' 5.00 LLibca library (for graphics)
  463.        The Microsoft(r) 'C' 5.00 Graphics library (for graphics)
  464.  
  465.   You  will note  that  for  graphics applications  you  will  need the
  466.   additional 'C' libraries listed above. Unfortunately we cannot supply
  467.   these for licensing reasons.
  468.  
  469.   If you already have  the Clipper(r) tools described above and want to
  470.   take  advantage of  Schooner functions  (not  commands), they  can be
  471.   directly intermixed  with Clipper(r)  commands and  functions in your
  472.   Clipper(r) applications.
  473.  
  474.   In  addition, the  Schooner  graphics should  be  accessible (without
  475.   recompiling with the Microsoft(r) libraries described above) by using
  476.   one of  the many third  party memory overlay  functions available. In
  477.   theory (We  stress theory  as we have  not done  this ourselves), you
  478.   should  be  able  to overlay  the  SCHOONRT  runtime  module  and use
  479.   Schooner  code to  create  graphics applications  in  your Clipper(r)
  480.   applications.
  481.  
  482.   Note that  the overlay technique  described above is  not the same as
  483.   overlays  commonly  used   by  compilers  and  linkers.  The  overlay
  484.   described above  is just a  sophisticated RUN (or  Schooner SHELL() )
  485.   which unloads your application and allows another applications to run
  486.   in its place. When complete, the overlayed application is removed and
  487.   your original application is restored.
  488.  
  489.   To order  the Schooner compiler  package send a  39.95 check or money
  490.   order  made out  to  'Jonathan Cook'  to  the address  listed  in the
  491.   README.DOC file.
  492.